package com.zhuanzhuan.hero.user.facade;

import com.bj58.spat.scf.server.contract.annotation.ServiceContract;
import com.bj58.youpin.common.rpc.result.Result;
import com.bj58.zhuanzhuan.zzentry.common.service.entity.ServiceHeaderEntity;
import com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult;
import com.bj58.zhuanzhuan.zzentry.common.service.model.openEntry.ZZHeader;
import com.zhuanzhuan.hero.user.dto.SetupUserPrivacyDTO;
import com.zhuanzhuan.hero.user.dto.privacy.QueryPrivacyUserDTO;
import com.zhuanzhuan.hero.user.dto.privacy.SwitchPrivacyDTO;
import com.zhuanzhuan.hero.user.vo.PageResultWrapper;
import com.zhuanzhuan.hero.user.vo.UserListItemVO;
import com.zhuanzhuan.hero.user.vo.privacy.ShowVisitRecordSwitchVO;

import java.util.List;

/**
 * @ClassName IUserPrivacyFacade
 * @Description
 * @Author hanjunjun
 * @Date 2024/6/18 16:07
 */
@ServiceContract
public interface IUserPrivacyFacade {

    /**
     * 前端-隐私-查询访客记录、个性化推荐开关
     *
     * @param header
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<com.zhaunzhuan.hero.user.vo.privacy.ShowVisitRecordSwitchVO>
     * @author  hanjunjun
     * @date 2024/6/19
     **/
    ZZOpenScfBaseResult<ShowVisitRecordSwitchVO> queryShowVisitRecordSwitch(@ZZHeader ServiceHeaderEntity header);

    /**
     * 前端-隐私-开关 访客记录、个性化推荐
     *
     * @param header
     * @param switchPrivacyDTO
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<com.zhaunzhuan.hero.user.vo.privacy.ShowVisitRecordSwitchVO>
     * @author  hanjunjun
     * @date 2024/6/19
     **/
    ZZOpenScfBaseResult<Boolean> switchPrivacy(@ZZHeader ServiceHeaderEntity header,
        SwitchPrivacyDTO switchPrivacyDTO);

    /**
     * 前端-隐私-分页查询设置了不看ta、不让ta看用户列表
     *
     * @param header
     * @param queryPrivacyUserDTO
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<com.zhaunzhuan.hero.user.vo.PageResultWrapper<com.zhaunzhuan.hero.user.vo.UserBriefInfoVO>>
     * @author  hanjunjun
     * @date 2024/6/19
     **/
    ZZOpenScfBaseResult<PageResultWrapper<UserListItemVO>> pagePrivacyUser(@ZZHeader ServiceHeaderEntity header,
        QueryPrivacyUserDTO queryPrivacyUserDTO);

    /**
     * 前端-隐私-给某人设置隐私权限
     *
     * @param header
     * @param setupUserPrivacyDTO
     * @return com.bj58.zhuanzhuan.zzentry.common.service.entity.ZZOpenScfBaseResult<java.lang.Void>
     * @author  hanjunjun
     * @date 2024/6/18
     **/
    ZZOpenScfBaseResult<Boolean> setupPrivacy(@ZZHeader ServiceHeaderEntity header, SetupUserPrivacyDTO setupUserPrivacyDTO);

    /**
     * 后端-查询设置隐私用户列表
     *
     * @param uid 自己
     * @param queryPrivacyUserDTO
     * @return
     * @author  hanjunjun
     * @date 2024/7/5
     **/
    Result<List<Long>> queryPrivacyUids(Long uid, QueryPrivacyUserDTO queryPrivacyUserDTO);

    /**
     * for search   查询用户设置了不看ta和不让ta看的所有uid
     *
     * @param uid
     * @return com.bj58.youpin.common.rpc.result.Result<java.util.List<java.lang.Long>>
     * @author  hanjunjun
     * @date 2024/7/24
     **/
    Result<List<Long>> queryIgnoreTypePrivacyUids(Long uid);
}
